package com.func.domain.strategy.service;

import com.func.domain.strategy.model.valobj.RuleWeightVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * IRaffleRule
 * </p>
 *
 * @author Simon
 * @version 2025.03.17.1.0.0
 * @description 抽奖规则接口: 提供对规则的业务功能查询
 * @since 2025-03-17
 */

public interface IRaffleRule {

    /**
     * 根据规则树ID集合查询奖品中加锁数量的配置 [部分奖品需要抽奖N次才能解锁]
     * @param treeIds 规则树ID数组
     * @return key 规则树ID; value rule_lock 加锁值
     */
    Map<String, Integer> queryAwardRuleLockCount(String[] treeIds);

    /**
     * 根据活动ID查询到所有的权重奖品
     * @param activityId 活动ID
     * @return 所有的权重奖品
     */
    List<RuleWeightVO> queryAwardRuleWeightByActivityId(Long activityId);

    /**
     * 查询奖品权重配置
     * @param strategyId 策略ID
     * @return 权重规则
     */
    List<RuleWeightVO> queryAwardRuleWeight(Long strategyId);
}
